<?php
/**
 *
 * User: Robin
 * Date: 2019/11/12 0012
 * Email: 704289189@qq.com
 **/


namespace app\admin\model\system;


use app\common\model\BaseModel;
use think\Session;

/**
 * Class Admin 管理员模型
 * @package app\admin\model\system
 */
class Admin extends BaseModel
{
    /**
     * 数据表主键
     * @var string
     */
    protected $pk = 'id';
    /**
     * 模型名称
     * @var string
     */
    protected $name = 'admin';

    /**
     * 用户登陆
     * @param $account
     * @param $pwd
     * @return bool
     */
    public static function login($account,$pwd){
        $adminInfo = self::get(compact('account'));
        if ($adminInfo) return self::setErrorInfo('登陆的账号不存在');
        if ($adminInfo['pwd']  != md5($pwd) )  return self::setErrorInfo('账号或密码错误，请重新输入');
        if (!$adminInfo['status']) return self::setErrorInfo('该账号已被关闭');
        self::setLoginInfo($adminInfo);
        event('AdminLoginAfter',[$adminInfo]);
        return true;
    }

    /**
     * 保存当前登陆用户信息
     * @param $adminInfo
     */
    public static function setLoginInfo($adminInfo){
        Seesion::set('adminId',$adminInfo['id']);
        Seesion::set('adminInfo',$adminInfo);
        Session::save();
    }

    /**
     * 清空当前登陆用户信息
     */
    public static function clearLoginInfo(){
        Session::delete('adminInfo');
        Session::delete('adminId');
        Session::save();
    }

    /**
     * 检查用户登陆状态
     * @return bool
     */
    public static function hasActiveAdmin(){
        return Session::has('adminId') && Session::has('adminInfo');
    }

    /**
     * 获取登陆用户信息
     * @return mixed
     */
    public static function activeAdminInfoOrFail(){
        $adminInfo = Session::get('adminInfo');
        if (!$adminInfo) exception('请登陆');
        if (!$adminInfo['status']) exception('该账号已被关闭');
        return $adminInfo;
    }

    /**
     * 获取登陆用户ID
     * @return mixed
     */
    public static function activeAdminIdOrFail(){
        $adminId = Session::get('adminId');
        if (!$adminId) exception('该用户未登陆');
        return $adminId;
    }

    public static function activeAdminAuthOrFail(){
        $adminInfo = self::activeAdminInfoOrFail();
        if (is_object($adminInfo)) $adminInfo = $adminInfo->toArray();
        return $adminInfo['level'] === 0 ?
    }
}